;-- MTP модуль Мавки для роботи із випадковими числами Кравчук Артемій, ArtemiyKra@gmail.com, https://github.com/ArtemiiKravchuk Версія 0.1.0, останні зміни 31.03.2023 --; модуль рандом ;; повертає випадкове число між 0 та 1 дія число() число global.Math.random() кінець ;; повертає випадкове ціле число у даному проміжку від мінімального значення (включно) до максимального (виключно) дія проміжок(мін число, макс число, шаг число = 1) число якщо мін == пусто або макс == пусто впасти "функція рандом.проміжок() повинна отримати як мінімум 2 аргументи: мінімальне (включно) та максимальне (виключно) числа." кінець значення = [] перебрати діапазон(мін, макс, шаг) як елемент значення.додати(елемент) кінець значення[global.Math.trunc(число()*значення.довжина())] кінець ;; повертає випадковий елемент списку дія елемент(вхідний_список список) щось вхідний_список[проміжок(0, вхідний_список.довжина())] кінець ;; повертає випадкові елементи списку, кількість передається як другий аргумет дія елементи(вхідний_список список, кількість число) список якщо кількість-global.Math.trunc(кількість)!=0 впасти "функція рандом.елементи(): другий аргумент (кількість) повинен бути цілим, кількість=%(кількість)." кінець якщо кількість > 0 результат = [] перебрати діапазон(0, кількість) результат.додати(вхідний_список[проміжок(0, вхідний_список.довжина())]) кінець результат інакше впасти "функція рандом.елементи(): кількість не може дорівнювати або бути меншим за нуль, кількість=%(кількість)." кінець кінець ;; повертає випадковий ключ словнику дія ключ(вхідний_словник словник) щось ключі = [] перебрати вхідний_словник.ключі() як ключ ключі.додати(ключ) кінець елемент(ключі) кінець ;; повертає випадкове значення із словника дія значення(вхідний_словник словник) щось вхідний_словник[ключ(вхідний_словник)] кінець ;; повертає випадкове логічне значення ("так" або "ні") дія логічне(вага1 число = 1, вага2 число = 1) число якщо вага1-global.Math.trunc(вага1)!=0 або вага2-global.Math.trunc(вага2)!=0 впасти "функція рандом.логічне(): значення ваги повинно бути цілим, вага1=%(вага1), вага2=%(вага2)." кінець якщо вага1>0 і вага2>0 можливі_результати = [] перебрати діапазон(0, вага1+вага2) як ітерація якщо ітерація < вага1 можливі_результати.додати(так) інакше можливі_результати.додати(ні) кінець кінець елемент(можливі_результати) інакше впасти "функція рандом.логічне(): значення ваги не може дорівнювати або бути меншим за нуль, вага1=%(вага1), вага2=%(вага2)." кінець кінець ;; повертає НОВИЙ список, складений із елементів даного у випадковому порядку дія перемішати(вхідний_список список) список новий_список = [] поки вхідний_список.довжина() > 0 випадковий_елемент = елемент(вхідний_список) новий_список.додати(випадковий_елемент) змінений_список = [] вже_перенесено = ні перебрати вхідний_список як елементи якщо ( елементи != випадковий_елемент ) або ( вже_перенесено == так ) змінений_список.додати(елементи) інакше вже_перенесено = так кінець кінець вхідний_список = змінений_список кінець новий_список кінець дати число дати проміжок дати елемент дати елементи дати ключ дати значення дати логічне дати перемішати кінець дати рандом